package com.suma.platform.core.service;

import java.util.List;

import com.suma.platform.core.dto.Exposer;
import com.suma.platform.core.dto.SeckillExecution;
import com.suma.platform.core.exception.SeckillException;
import com.suma.platform.core.model.Seckill;

/**
 * @author suma
 * @date 2018/2/12 上午10:02
 */
public interface SeckillService {

	/**
	 * 查询全部秒杀记录
	 * 
	 * @return
	 */
	List<Seckill> getSeckillList();

	/**
	 * 查询单个秒杀记录
	 * 
	 * @param seckillId
	 * @return
	 */
	Seckill getById(long seckillId);

	/**
	 * 在秒杀开启时输出秒杀接口的地址，否则输出系统时间和秒杀时间
	 *
	 * @param [seckillId]
	 * @return com.suma.platform.core.dto.Exposer
	 */
	Exposer exportSeckillUrl(long seckillId);

	/**
	 * 执行秒杀操作，有可能失败，有可能成功，所以要抛出我们允许的异常
	 *
	 * @param [seckillId,
	 *            userPhone, md5]
	 * @return com.suma.platform.core.dto.SeckillExecution
	 */
	SeckillExecution executeSeckill(long seckillId, long userPhone, String md5) throws SeckillException;

	SeckillExecution executeSeckillProcedure(long seckillId, long userPhone, String md5) throws SeckillException;
}
